package com.hubspot.jackson.test; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.node.ArrayNode; import com.hubspot.jackson.datatype.protobuf.ProtobufModule; import com.hubspot.jackson.test.util.ProtobufCreator; import com.hubspot.jackson.test.util.TestProtobuf.PropertyNamingCamelCased; import com.hubspot.jackson.test.util.TestProtobuf.PropertyNamingSnakeCased; import org.junit.Test; import java.util.List; import static com.hubspot.jackson.test.util.ObjectMapperHelper.camelCase; import static com.hubspot.jackson.test.util.ObjectMapperHelper.toTree; import static com.hubspot.jackson.test.util.ObjectMapperHelper.underscore; import static org.assertj.core.api.Assertions.assertThat; public class PropertyNamingTest { @Test public void testSingleSnakeCaseToCamelCase() { PropertyNamingSnakeCased message = ProtobufCreator.create(PropertyNamingSnakeCased.class); JsonNode tree = toTree(camelCase(), message); assertThat(tree.isObject()).isTrue(); assertThat(tree.size()).isEqualTo(1); assertThat(tree.get("stringAttribute")).isNotNull(); assertThat(tree.get("stringAttribute").textValue()).isEqualTo(message.getStringAttribute()); } @Test public void testMultipleSnakeCaseToCamelCase() { List<PropertyNamingSnakeCased> messages = ProtobufCreator.create(PropertyNamingSnakeCased.class, 10); JsonNode tree = toTree(camelCase(), messages); assertThat(tree).isInstanceOf(ArrayNode.class); assertThat(tree.size()).isEqualTo(10); for (int i = 0; i < 10; i++) { JsonNode subTree = tree.get(i); assertThat(subTree.isObject()).isTrue(); assertThat(subTree.size()).isEqualTo(1); assertThat(subTree.get("stringAttribute")).isNotNull(); assertThat(subTree.get("stringAttribute").textValue()).isEqualTo(messages.get(i).getStringAttribute()); } } @Test public void testSingleUnderscore() { PropertyNamingSnakeCased message = ProtobufCreator.create(PropertyNamingSnakeCased.class); JsonNode tree = toTree(underscore(), message); assertThat(tree.isObject()).isTrue(); assertThat(tree.size()).isEqualTo(1); assertThat(tree.get("string_attribute")).isNotNull(); assertThat(tree.get("string_attribute").textValue()).isEqualTo(message.getStringAttribute()); } @Test public void testMultipleUnderscore() { List<PropertyNamingSnakeCased> messages = ProtobufCreator.create(PropertyNamingSnakeCased.class, 10); JsonNode tree = toTree(underscore(), messages); assertThat(tree).isInstanceOf(ArrayNode.class); assertThat(tree.size()).isEqualTo(10); for (int i = 0; i < 10; i++) { JsonNode subTree = tree.get(i); assertThat(subTree.isObject()).isTrue(); assertThat(subTree.size()).isEqualTo(1); assertThat(subTree.get("string_attribute")).isNotNull(); assertThat(subTree.get("string_attribute").textValue()).isEqualTo(messages.get(i).getStringAttribute()); } } @Test public void testSingleStillCamelCase() { PropertyNamingCamelCased message = ProtobufCreator.create(PropertyNamingCamelCased.class); @SuppressWarnings("serial") ObjectMapper mapper = new ObjectMapper().registerModule(new ProtobufModule()).setPropertyNamingStrategy( new PropertyNamingStrategy.PropertyNamingStrategyBase() { @Override public String translate(String propertyName) { return propertyName; } }); JsonNode tree = toTree(mapper, message); assertThat(tree.isObject()).isTrue(); assertThat(tree.size()).isEqualTo(1); assertThat(tree.get("stringAttribute")).isNotNull(); assertThat(tree.get("stringAttribute").textValue()).isEqualTo(message.getStringAttribute()); } @Test public void testMultipleSillCamelCase() { List<PropertyNamingCamelCased> messages = ProtobufCreator.create(PropertyNamingCamelCased.class, 10); @SuppressWarnings("serial") ObjectMapper mapper = new ObjectMapper().registerModule(new ProtobufModule()).setPropertyNamingStrategy( new PropertyNamingStrategy.PropertyNamingStrategyBase() { @Override public String translate(String propertyName) { return propertyName; } }); JsonNode tree = toTree(mapper, messages); assertThat(tree).isInstanceOf(ArrayNode.class); assertThat(tree.size()).isEqualTo(10); for (int i = 0; i < 10; i++) { JsonNode subTree = tree.get(i); assertThat(subTree.isObject()).isTrue(); assertThat(subTree.size()).isEqualTo(1); assertThat(subTree.get("stringAttribute")).isNotNull(); assertThat(subTree.get("stringAttribute").textValue()).isEqualTo(messages.get(i).getStringAttribute()); } } }